package com.wwdx.controller.base;

import com.google.common.collect.Maps;
import com.wwdx.model.dto.BasePayDTO;

import java.util.SortedMap;

/**
 * @author liguoliang
 * @date 2018/5/25 21:54
 */
public abstract class BaseJdOrderController extends BaseController{

    /**
     * 获取签名参数
     * @param timestamp 时间戳
     * @param version 版本号
     * @return {@link java.util.SortedMap}
     */
    protected SortedMap<String, Object> getSortedMap(String timestamp, String version,String jdOrderNo){
        SortedMap<String, Object> sortedMap = Maps.newTreeMap();
        sortedMap.put("timestamp",timestamp);
        sortedMap.put("version",version);
        sortedMap.put("jdOrderNo",jdOrderNo);
        return sortedMap;
    }

    /**
     * 正确结果
     * @param jdOrderNo 京东订单号
     * @param agentOrderNo 商户订单号
     * @param sign 签名
     * @param signType 签名类型
     * @param timestamp 时间戳
     * @param version 版本号
     * @return {@link BasePayDTO.JdPayDTO}
     */
    protected BasePayDTO.JdPayDTO getTResult(String jdOrderNo,String agentOrderNo,
                                             String sign, String signType,String timestamp,String version){

        return BasePayDTO.JdPayDTO.builder()
                .isSuccess("T").errorCode("").agentOrderNo(agentOrderNo).jdOrderNo(jdOrderNo)
                .sign(sign).signType(signType).timestamp(timestamp)
                .version(version).build();
    }

    /**
     * 失败结果
     * @param errorCode 错误码
     * @param jdOrderNo 京东订单号
     * @param sign 签名
     * @param signType 签名类型
     * @param timestamp 时间戳
     * @param version 版本号
     * @return {@link BasePayDTO.JdPayDTO}
     */
    protected BasePayDTO.JdPayDTO getFResult(String errorCode,String jdOrderNo,Long agentPrice,String sign,
                                             String signType,String timestamp,String version){

        return BasePayDTO.JdPayDTO.builder()
                .isSuccess("F").errorCode(errorCode)
                .jdOrderNo(jdOrderNo).agentPrice(agentPrice).sign(sign)
                .signType(signType).timestamp(timestamp)
                .version(version).build();
    }
}